package net.melon.product.inst.service;

import java.util.List;

import net.esj.basic.exception.MelonException;
import net.esj.basic.utils.Pagination;
import net.melon.product.pojo.Product;
import net.melon.product.pojo.ProductAttributeLink;
import net.melon.product.pojo.ProductImage;
import net.melon.product.pojo.ProductSku;
import net.melon.product.pojo.ProductSpecificationsLink;
import net.melon.product.pojo.dto.ProductImageDto;
import net.melon.stock.pojo.Stock;
import net.web.dto.ProductDto;

public interface ProductService {

	ProductImageDto getProductImageDto(String productId);

	void addProduct(Product entity, List<String> picnames);

	List<ProductImage> getProductImageList(String productId);
	
	Product getProduct(String id,boolean withClassify,boolean withImages,boolean withSku,boolean withSpecifications,boolean withAttribute);
	
	List<ProductSku> getProductSkuList(String productId);

	List<ProductSpecificationsLink> getProductSpecificationsLinkList(String productId);
	
	List<ProductAttributeLink> getProductAttributeList(String productId);

	void updateProduct(Product entity, List<String> picnames);

	void deleteImage(String imageId);

	void editStock(String id, List<ProductSku> productSkus);
	
	void marketEnable(String id, int state);

	Pagination<Product> productPage(Pagination<Product> pagination);

	List<ProductDto> getHotCarList(Long regionId,int limit) throws MelonException,Exception;

	void click(String productId);

	/**获取类型下的产品
	 * @param withStock */
	
	public List<Product> getProductByClassifyAndStock(Long classifyId, boolean withStock);

	/**获取类型下的产品个数*/
	int getProductCountByClassify(Long classifyId);

	void deleteProduct(String deletes);


}
